#ifndef _LIBQLYRICS_H_
#define _LIBQLYRICS_H_

/** Player status. */
typedef enum {
	Playing = 1,
	Paused  = 2,
	Idle    = 3,
	Closed  = 4
} Status;

/** The id of request that receives from client. */
typedef enum {
    RequestTime = 0,
    RequestTitle = 1,
    RequestAlbum = 2,
    RequestArtist = 3,
    RequestLength = 4,
    RequestFilename = 5,
    RequestExit = 6,
    RequestEnd = 7      // flag used to find the length
} RequestEvent;

/** The id of response that send to client. */
typedef enum  {
    ResponseTime = 0,
    ResponseTitle = 1,
    ResponseAlbum = 2,
    ResponseArtist = 3,
    ResponseLength = 4,
    ResponseFilename = 5,
    ResponseExit = 6,
    ResponseStatusChange = 100,
    ResponseTrackChange = 101,
    ResponseConfigure = 102
} ResponseEvent;

typedef const char* (*Callback)();

#ifdef __cplusplus
extern "C" {
#endif

void lrcRegisterEvent(const RequestEvent event, Callback func);
void lrcStart();
void lrcStop();
void lrcSetStatus(Status status);
void lrcChangeTrack();
void lrcConfigure();
void lrcSetPlaybackTime(int currentTime);

#ifdef __cplusplus
}
#endif

#endif

